export type ResourceConstant =
    | RESOURCE_ENERGY
    | RESOURCE_POWER
    | RESOURCE_OPS
    | MineralConstant
    | MineralCompoundConstant
    | DepositConstant
    | CommodityConstant

export type _ResourceConstantSansEnergy = Exclude<ResourceConstant, RESOURCE_ENERGY>

/** The raw harvestable minerals */
export type MineralConstant =
    | RESOURCE_UTRIUM
    | RESOURCE_LEMERGIUM
    | RESOURCE_KEANIUM
    | RESOURCE_ZYNTHIUM
    | RESOURCE_OXYGEN
    | RESOURCE_HYDROGEN
    | RESOURCE_CATALYST

/** The compounds which can't boost */
export type MineralBaseCompoundsConstant =
    | RESOURCE_HYDROXIDE
    | RESOURCE_ZYNTHIUM_KEANITE
    | RESOURCE_UTRIUM_LEMERGITE
    | RESOURCE_GHODIUM

/** The boosts (from tier 1 to tier 3) */
export type MineralBoostConstant =
    | RESOURCE_UTRIUM_HYDRIDE
    | RESOURCE_UTRIUM_OXIDE
    | RESOURCE_KEANIUM_HYDRIDE
    | RESOURCE_KEANIUM_OXIDE
    | RESOURCE_LEMERGIUM_HYDRIDE
    | RESOURCE_LEMERGIUM_OXIDE
    | RESOURCE_ZYNTHIUM_HYDRIDE
    | RESOURCE_ZYNTHIUM_OXIDE
    | RESOURCE_GHODIUM_HYDRIDE
    | RESOURCE_GHODIUM_OXIDE
    | RESOURCE_UTRIUM_ACID
    | RESOURCE_UTRIUM_ALKALIDE
    | RESOURCE_KEANIUM_ACID
    | RESOURCE_KEANIUM_ALKALIDE
    | RESOURCE_LEMERGIUM_ACID
    | RESOURCE_LEMERGIUM_ALKALIDE
    | RESOURCE_ZYNTHIUM_ACID
    | RESOURCE_ZYNTHIUM_ALKALIDE
    | RESOURCE_GHODIUM_ACID
    | RESOURCE_GHODIUM_ALKALIDE
    | RESOURCE_CATALYZED_UTRIUM_ACID
    | RESOURCE_CATALYZED_UTRIUM_ALKALIDE
    | RESOURCE_CATALYZED_KEANIUM_ACID
    | RESOURCE_CATALYZED_KEANIUM_ALKALIDE
    | RESOURCE_CATALYZED_LEMERGIUM_ACID
    | RESOURCE_CATALYZED_LEMERGIUM_ALKALIDE
    | RESOURCE_CATALYZED_ZYNTHIUM_ACID
    | RESOURCE_CATALYZED_ZYNTHIUM_ALKALIDE
    | RESOURCE_CATALYZED_GHODIUM_ACID
    | RESOURCE_CATALYZED_GHODIUM_ALKALIDE

/** All the mineral compounds */
export type MineralCompoundConstant = MineralBaseCompoundsConstant | MineralBoostConstant

/** The raw deposits */
export type DepositConstant = RESOURCE_MIST | RESOURCE_BIOMASS | RESOURCE_METAL | RESOURCE_SILICON

/** The commodities, produced by the Factory */
export type CommodityConstant =
    | RESOURCE_UTRIUM_BAR
    | RESOURCE_LEMERGIUM_BAR
    | RESOURCE_ZYNTHIUM_BAR
    | RESOURCE_KEANIUM_BAR
    | RESOURCE_GHODIUM_MELT
    | RESOURCE_OXIDANT
    | RESOURCE_REDUCTANT
    | RESOURCE_PURIFIER
    | RESOURCE_BATTERY
    | RESOURCE_COMPOSITE
    | RESOURCE_CRYSTAL
    | RESOURCE_LIQUID
    | RESOURCE_WIRE
    | RESOURCE_SWITCH
    | RESOURCE_TRANSISTOR
    | RESOURCE_MICROCHIP
    | RESOURCE_CIRCUIT
    | RESOURCE_DEVICE
    | RESOURCE_CELL
    | RESOURCE_PHLEGM
    | RESOURCE_TISSUE
    | RESOURCE_MUSCLE
    | RESOURCE_ORGANOID
    | RESOURCE_ORGANISM
    | RESOURCE_ALLOY
    | RESOURCE_TUBE
    | RESOURCE_FIXTURES
    | RESOURCE_FRAME
    | RESOURCE_HYDRAULICS
    | RESOURCE_MACHINE
    | RESOURCE_CONDENSATE
    | RESOURCE_CONCENTRATE
    | RESOURCE_EXTRACT
    | RESOURCE_SPIRIT
    | RESOURCE_EMANATION
    | RESOURCE_ESSENCE

export type InterShardResourceConstant = SUBSCRIPTION_TOKEN | CPU_UNLOCK | PIXEL | ACCESS_KEY
export type MarketResourceConstant = ResourceConstant | InterShardResourceConstant

export type RESOURCE_ENERGY = 'energy'
export type RESOURCE_POWER = 'power'
export type RESOURCE_OPS = 'ops'

export type RESOURCE_BIOMASS = 'biomass'
export type RESOURCE_METAL = 'metal'
export type RESOURCE_MIST = 'mist'
export type RESOURCE_SILICON = 'silicon'

export type RESOURCE_UTRIUM = 'U'
export type RESOURCE_LEMERGIUM = 'L'
export type RESOURCE_KEANIUM = 'K'
export type RESOURCE_ZYNTHIUM = 'Z'
export type RESOURCE_OXYGEN = 'O'
export type RESOURCE_HYDROGEN = 'H'
export type RESOURCE_CATALYST = 'X'

export type RESOURCE_HYDROXIDE = 'OH'
export type RESOURCE_ZYNTHIUM_KEANITE = 'ZK'
export type RESOURCE_UTRIUM_LEMERGITE = 'UL'
export type RESOURCE_GHODIUM = 'G'

export type RESOURCE_UTRIUM_HYDRIDE = 'UH'
export type RESOURCE_UTRIUM_OXIDE = 'UO'
export type RESOURCE_KEANIUM_HYDRIDE = 'KH'
export type RESOURCE_KEANIUM_OXIDE = 'KO'
export type RESOURCE_LEMERGIUM_HYDRIDE = 'LH'
export type RESOURCE_LEMERGIUM_OXIDE = 'LO'
export type RESOURCE_ZYNTHIUM_HYDRIDE = 'ZH'
export type RESOURCE_ZYNTHIUM_OXIDE = 'ZO'
export type RESOURCE_GHODIUM_HYDRIDE = 'GH'
export type RESOURCE_GHODIUM_OXIDE = 'GO'

export type RESOURCE_UTRIUM_ACID = 'UH2O'
export type RESOURCE_UTRIUM_ALKALIDE = 'UHO2'
export type RESOURCE_KEANIUM_ACID = 'KH2O'
export type RESOURCE_KEANIUM_ALKALIDE = 'KHO2'
export type RESOURCE_LEMERGIUM_ACID = 'LH2O'
export type RESOURCE_LEMERGIUM_ALKALIDE = 'LHO2'
export type RESOURCE_ZYNTHIUM_ACID = 'ZH2O'
export type RESOURCE_ZYNTHIUM_ALKALIDE = 'ZHO2'
export type RESOURCE_GHODIUM_ACID = 'GH2O'
export type RESOURCE_GHODIUM_ALKALIDE = 'GHO2'

export type RESOURCE_CATALYZED_UTRIUM_ACID = 'XUH2O'
export type RESOURCE_CATALYZED_UTRIUM_ALKALIDE = 'XUHO2'
export type RESOURCE_CATALYZED_KEANIUM_ACID = 'XKH2O'
export type RESOURCE_CATALYZED_KEANIUM_ALKALIDE = 'XKHO2'
export type RESOURCE_CATALYZED_LEMERGIUM_ACID = 'XLH2O'
export type RESOURCE_CATALYZED_LEMERGIUM_ALKALIDE = 'XLHO2'
export type RESOURCE_CATALYZED_ZYNTHIUM_ACID = 'XZH2O'
export type RESOURCE_CATALYZED_ZYNTHIUM_ALKALIDE = 'XZHO2'
export type RESOURCE_CATALYZED_GHODIUM_ACID = 'XGH2O'
export type RESOURCE_CATALYZED_GHODIUM_ALKALIDE = 'XGHO2'

export type RESOURCE_UTRIUM_BAR = 'utrium_bar'
export type RESOURCE_LEMERGIUM_BAR = 'lemergium_bar'
export type RESOURCE_ZYNTHIUM_BAR = 'zynthium_bar'
export type RESOURCE_KEANIUM_BAR = 'keanium_bar'
export type RESOURCE_GHODIUM_MELT = 'ghodium_melt'
export type RESOURCE_OXIDANT = 'oxidant'
export type RESOURCE_REDUCTANT = 'reductant'
export type RESOURCE_PURIFIER = 'purifier'
export type RESOURCE_BATTERY = 'battery'

export type RESOURCE_COMPOSITE = 'composite'
export type RESOURCE_CRYSTAL = 'crystal'
export type RESOURCE_LIQUID = 'liquid'

export type RESOURCE_WIRE = 'wire'
export type RESOURCE_SWITCH = 'switch'
export type RESOURCE_TRANSISTOR = 'transistor'
export type RESOURCE_MICROCHIP = 'microchip'
export type RESOURCE_CIRCUIT = 'circuit'
export type RESOURCE_DEVICE = 'device'

export type RESOURCE_CELL = 'cell'
export type RESOURCE_PHLEGM = 'phlegm'
export type RESOURCE_TISSUE = 'tissue'
export type RESOURCE_MUSCLE = 'muscle'
export type RESOURCE_ORGANOID = 'organoid'
export type RESOURCE_ORGANISM = 'organism'

export type RESOURCE_ALLOY = 'alloy'
export type RESOURCE_TUBE = 'tube'
export type RESOURCE_FIXTURES = 'fixtures'
export type RESOURCE_FRAME = 'frame'
export type RESOURCE_HYDRAULICS = 'hydraulics'
export type RESOURCE_MACHINE = 'machine'

export type RESOURCE_CONDENSATE = 'condensate'
export type RESOURCE_CONCENTRATE = 'concentrate'
export type RESOURCE_EXTRACT = 'extract'
export type RESOURCE_SPIRIT = 'spirit'
export type RESOURCE_EMANATION = 'emanation'
export type RESOURCE_ESSENCE = 'essence'

export type SUBSCRIPTION_TOKEN = 'token'
export type CPU_UNLOCK = 'cpuUnlock'
export type PIXEL = 'pixel'
export type ACCESS_KEY = 'accessKey'
